﻿using System;
using System.Drawing;
using System.Windows.Forms;

namespace Cataloger
{
    /// <summary>
    /// Klasa opisująca kategorię statyczną
    /// Kategoria taka może być nadana dowolnemu
    /// plikowi, w przypadku nadawania katagori obiektom
    /// gromadzacym Pliki, każdy plik w danym konenerze otrzyma
    /// kategorię taką jak obiekt nadrzędny któremu przydzieliliśmy
    /// </summary>
    [Serializable]
    public class Kategoria
    {
		#region Constructors (3) 

        public Kategoria(string naz, Color kol):this(naz)
        {
            this.Kolor = kol;
        }

        public Kategoria(string naz)
        {
            this.Nazwa = naz;

        }

        public Kategoria()
        {
            Nazwa = "";
        }

		#endregion Constructors 

		#region Properties (2) 

        public Color Kolor
        {
            get;
            set;
        }

        public string Nazwa
        {
            get;
            set;
        }

		#endregion Properties 
        public static Kategorie KategorieDostepne = new Kategorie();
		#region Methods (3) 

		// Public Methods (2) 

        /// <summary>
        /// Wyswietla w kontrolce ListView liste plikow pasujacych do danej kategorii
        /// </summary>
        /// <param name="lst">Kontrolka listview na której ma być wyświtlona lista plików</param>
        public void PokazPasujace(ListView lst)
        {
            foreach (Katalog kat in Katalog.WczytaneKatalogi)
            {
                foreach (Nosnik n in kat.Nosniki)
                {
                    SerachDir(n.Root,lst);
                }
            }
        }

        public override string ToString()
        {
            return Nazwa;
        }
		// Private Methods (1) 

          /// <summary>
          /// Metoda pomocnicza dla metody PokazPasujace
          /// </summary>
          /// <param name="f"></param>
          /// <param name="listView1"></param>
        private void SerachDir(Folder f, ListView listView1)
        {
            foreach (Plik p in f.Pliki)
            {
                if (p.Kategoria.Nazwa == this.Nazwa)
                {
                    p.ShowListViewFileInfo(listView1);
                }
            }
            foreach (Folder fo in f.Podflodery)
            {
                SerachDir(fo,listView1);
            }
        }

		#endregion Methods 
    }
}
